﻿using System;
using System.Collections.Generic;
using System.IO;
using System.Runtime.InteropServices;
using Word = Microsoft.Office.Interop.Word;


namespace Models
{
    public class Rapport
    {
        #region Methods

        public void UdskrivKontrakt(Bruger bruger)
        {
            //Sti til word template
            object path = Directory.GetParent(Directory.GetCurrentDirectory()).Parent.FullName + @"\WordTemplates\Kvittering.docx";

            //Nulstiller app hvis der er oprettet én tidligere
            Word.Application app = null;

            //Laver en ny word app
            app = new Word.Application();
            object missing = Type.Missing;

            //Laver et nyt dokument med stien til vores template samt sætter templated til skrivebeskyttet
            Word.Document doc = app.Documents.Open(ref path, ref missing, ReadOnly: true);

            //Tilføjer værdi fra bruger objektet til de oprettede bogmærker i word templated
            doc.Bookmarks["Dato16"].Range.Text = DateTime.Now.ToShortDateString();
            doc.Bookmarks["BrugerNavn1"].Range.Text = bruger.Navn;
            doc.Bookmarks["BrugerNavn2"].Range.Text = bruger.Navn;
            doc.Bookmarks["Initialer"].Range.Text = bruger.Initialer;
            doc.Bookmarks["Afdeling"].Range.Text = bruger.Afdeling.Navn;

            //Vi itererer igennem brugerens udlån og tilføjer det til de oprettede bogmærker i word templated
            int i = 1;
            foreach (var udlån in bruger.Udlån)
            {
                doc.Bookmarks["Navn" + i.ToString()].Range.Text = udlån.Enhed.Navn;
                doc.Bookmarks["Antal" + i.ToString()].Range.Text = udlån.Antal.ToString("D");
                doc.Bookmarks["Dato" + i.ToString()].Range.Text = udlån.UdlånsDato.ToShortDateString();
                i++;
            }
            
            //Vi skjuler vores bogmærker ved enheder hvis tamplated ikke er helt udfyldt
            for (; i <= 15; i++)
            {
                doc.Bookmarks["Navn" + i.ToString()].Range.Text = "";
                doc.Bookmarks["Antal" + i.ToString()].Range.Text = "";
                doc.Bookmarks["Dato" + i.ToString()].Range.Text = "";
            }
            
            //Åbner word og synliggør dokumentet
            app.Visible = true;

            //Fjerner reference til word app i programmet
            Marshal.ReleaseComObject(app);
        }

        public void UdskrivKontrakt(List<Udlån> udlånsListe)
        {
            Bruger bruger = udlånsListe[0].Bruger;

            //Sti til word template
            object path = Directory.GetParent(Directory.GetCurrentDirectory()).Parent.FullName + @"\WordTemplates\Kvittering.docx";

            //Nulstiller app hvis der er oprettet én tidligere
            Word.Application app = null;

            //Laver en ny word app
            app = new Word.Application();
            object missing = Type.Missing;

            //Laver et nyt dokument med stien til vores template samt sætter templated til skrivebeskyttet
            Word.Document doc = app.Documents.Open(ref path, ref missing, ReadOnly: true);

            //Tilføjer værdi fra bruger objektet til de oprettede bogmærker i word templated
            doc.Bookmarks["Dato16"].Range.Text = DateTime.Now.ToShortDateString();
            doc.Bookmarks["BrugerNavn1"].Range.Text = bruger.Navn;
            doc.Bookmarks["BrugerNavn2"].Range.Text = bruger.Navn;
            doc.Bookmarks["Initialer"].Range.Text = bruger.Initialer;
            doc.Bookmarks["Afdeling"].Range.Text = bruger.Afdeling.Navn;
            
            //Vi itererer igennem brugerens udlån og tilføjer det til de oprettede bogmærker i word templated
            int i = 1;
            foreach (var udlån in udlånsListe)
            {
                doc.Bookmarks["Navn" + i.ToString()].Range.Text = udlån.Enhed.Navn;
                doc.Bookmarks["Antal" + i.ToString()].Range.Text = udlån.Antal.ToString("D");
                doc.Bookmarks["Dato" + i.ToString()].Range.Text = udlån.UdlånsDato.ToShortDateString();
                i++;
            }

            //Vi skjuler vores bogmærker ved enheder hvis tamplated ikke er helt udfyldt
            for (; i <= 15; i++)
            {
                doc.Bookmarks["Navn" + i.ToString()].Range.Text = "";
                doc.Bookmarks["Antal" + i.ToString()].Range.Text = "";
                doc.Bookmarks["Dato" + i.ToString()].Range.Text = "";
            }

            //Åbner word og synliggør dokumentet
            app.Visible = true;

            //Fjerner reference til word app i programmet
            Marshal.ReleaseComObject(app);
        }

        #endregion 
    }
}